package cn.aopmin.order.listener;

import cn.aopmin.order.event.LogEvent;
import org.springframework.context.event.EventListener;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;

/**
 * 监听器
 */
@Component
public class LogListener {


    /*
    默认情况下，事件处理是同步的，
    事件发布者会等待监听器处理完事件后才继续执行。事件处理的顺序按照监听器注册的顺序执行。
     */
    @Async //通过 @Async注解异步处理，避免阻塞主线程
    @EventListener
    public void onOrderCreated(LogEvent event) {
        new Thread(() -> {
            try {
                Thread.sleep(3000);
                System.out.println("日志名称: " + event.getMessage());
                System.out.println("onOrderCreated.success~");
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }).start();
    }
}